package api

import (
	"singo/service"

	"github.com/gin-contrib/sessions"
	"github.com/gin-gonic/gin"
)

// MyPerformance 我的绩效管理列表接口
// @Summary 我的绩效管理列表
// @Router /api/v1/tasks [get]
// @tags 我的绩效管理相关
// @accept application/json
// @Param user_id query string false "关联用户ID"
// @Param organization_id query string false "关联小组ID"
// @Param project_id query string false "关联我的绩效ID"
// @Param status query int false "状态"
// @Param pageNo query int false "页码"
// @Param pageSize query int false "条数"
// @Success 200 {string} json "{"status": 0, "data": {}, "msg": ""}"
func MyPerformance(c *gin.Context) {
	service := service.MyPerformanceService{}
	session := sessions.Default(c)
	userUID := session.Get("user_uid")

	if err := c.ShouldBind(&service); err == nil {
		res := service.MyPerformance(userUID.(string))
		c.JSON(200, res)
	} else {
		c.JSON(200, ErrorResponse(err))
	}
}

// PerformanceList 全部绩效管理列表接口
// @Summary 全部绩效管理列表
// @Router /api/v1/tasks [get]
// @tags 全部绩效管理相关
// @accept application/json
// @Param user_id query string false "关联用户ID"
// @Param organization_id query string false "关联小组ID"
// @Param project_id query string false "关联全部绩效ID"
// @Param status query int false "状态"
// @Param pageNo query int false "页码"
// @Param pageSize query int false "条数"
// @Success 200 {string} json "{"status": 0, "data": {}, "msg": ""}"
func PerformanceList(c *gin.Context) {
	service := service.PerformanceListService{}
	if err := c.ShouldBind(&service); err == nil {
		res := service.PerformanceList()
		c.JSON(200, res)
	} else {
		c.JSON(200, ErrorResponse(err))
	}
}

// PerformanceRank 绩效排名管理列表接口
// @Summary 绩效排名管理列表
// @Router /api/v1/tasks [get]
// @tags 绩效排名管理相关
// @accept application/json
// @Param user_id query string false "关联用户ID"
// @Param organization_id query string false "关联小组ID"
// @Param project_id query string false "关联绩效排名ID"
// @Param status query int false "状态"
// @Param pageNo query int false "页码"
// @Param pageSize query int false "条数"
// @Success 200 {string} json "{"status": 0, "data": {}, "msg": ""}"
func PerformanceRank(c *gin.Context) {
	service := service.PerformanceRankService{}
	if err := c.ShouldBind(&service); err == nil {
		res := service.PerformanceRank()
		c.JSON(200, res)
	} else {
		c.JSON(200, ErrorResponse(err))
	}
}
